""" Напишите программу, которая перемножает две матрицы.

Формат входных данных
На вход программе подаются два натуральных числа nn и mm — количество строк и столбцов в первой матрице, затем элементы первой матрицы, затем пустая строка. Далее следуют числа mm и kk — количество строк и столбцов второй матрицы затем элементы второй матрицы.

Формат выходных данных
Программа должна вывести результирующую матрицу, разделяя элементы символом пробела.
 """
""" 1) получаем n,m
2) аналогично *Примечание 3 из урока Матрицы ч.1
заполняем matrix1=[]
3)input() # пустая строка
4) получаем m, k
5) аналогично п.2 заполняем matrix2
6) создаем результирующую matrix3 размером n*k, которую пока заполним нулями 
7) нам потребуется создать два вложенных цикла, чтобы пробежаться по индексам matrix3[0..n строк][0..k столбцов]. Так же потребуется третий вложенный цикл, так как нам чтобы обращаться к индексам первых двух матриц необходимо учитывать что первая матрица состоит из m-столбцов, а вторая матрица из m-строк. третий цикл будет от 0..m. 
8) в третьем вложенном цикле формула matrix3[i][j]+=matrix1[i][c]*matrix2[c][j] # в данной формуле переменная "с" меняет значение от 0 до m. Следовательно [c]-должен быть индексом столбца в первой матрице и индексом строки во второй матрице.Формула matrix3[i][j]+= работает по аналогии (i=i+1) то есть после выполнения первой итерации, ее результат складывается с результатом второй итерации и т.д. Таким образом количество сложений(операций суммирования перемноженных элементов) зависит от числа m.
9) вывод результирующей матрицы """

# функция печати матриц с распаковкой строк
def print_matrix(matrix_name,matrix_lenght):
    for i in range(matrix_lenght):
        print(*matrix_name[i]) 

if __name__=='__main__':
    # матрица А
    size = [int(i) for i in input().split()]
    n = size[0]
    m = size[1]
    A=list()
    A=[[int(i) for i in input().split()] for j in range(n)]
    
    input()
    
    # матрица В
    size = [int(i) for i in input().split()]
    m = size[0]
    k = size[1]
    B=[[int(i) for i in input().split()] for j in range(m)]
    
    # матрица С
    C=[[0 for i in range(n)] for j in range(k)]
    
    for i in range (n):
        for j in range(k):
            for g in range(m):
                C[i][j] += A[i][g]*B[g][j]
    print_matrix(C,len(C))